#include <iostream>
using namespace std;

template<class T>
T Min(const T &a, const T &b) {
  return (a<b?a:b);
}

int main() {
  double a=3.2, b=5.4;
  cout<<Min(a, b)<<endl;
  cout<<Min<int>(a, b)<<endl;
  cout<<Min(3.2, 5.4)<<endl; // All right
  // int &c = 42; // WRONG
}
